﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;

/// <summary>
/// Summary description for Candidatos
/// </summary>
public static class Candidatos
{
    private static AppSettingsReader settings = new AppSettingsReader();

    public static Candidato GetCandidato(string id)
    {
        Candidato candidato = new Candidato();

        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        string strSQL = "";

        try
        {
            bd.bdConecta();

            strSQL = "SELECT [idcandidato] ";
            strSQL += "      ,[idpersona]";
            strSQL += "      ,[activo]";
            strSQL += "      ,[fechaalta]";
            strSQL += "      FROM [Cosea_Reclutamiento].[dbo].[Candidato]";
            strSQL += "      WHERE idcandidato = '{0}'";

            strSQL = string.Format(strSQL, id);

            DataSet ds = bd.dataSetConsulta(strSQL, "candidato");

            if (ds.Tables["candidato"].Rows.Count > 0)
            {
                DataRow dr = ds.Tables["candidato"].Rows[0];
                candidato.idcandidato = dr["idcandidato"].ToString();
                candidato.idpersona = dr["idpersona"].ToString();
                bool bActivo = bool.Parse(dr["activo"].ToString());
                if (bActivo == true)
                    candidato.activo = "1";
                else
                    candidato.activo = "0";

            }

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }

        return candidato;
    }

    public static string ObtenIDCandidato(string idPersona)
    {
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
        string strSQL = "";
        string resultado = "";
        try
        {
            bd.bdConecta();

            strSQL = "select idcandidato from candidato c ";
            strSQL += "      inner join persona p";
            strSQL += "      on c.idpersona = p.idpersona ";
            strSQL += "      where p.idpersona = '{0}'";
            strSQL += "      and c.activo = 1";            

            strSQL = string.Format(strSQL, idPersona);

            DataSet ds = bd.dataSetConsulta(strSQL, "candidato");

            if (ds.Tables["candidato"].Rows.Count > 0)
            {
                DataRow dr = ds.Tables["candidato"].Rows[0];
                resultado = dr["idcandidato"].ToString();
            }

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return resultado;
    }

    public static DataSet GuardaCandidato(Candidato candidato, 
        Persona persona, Usuario usr)
    {

        DataSet ds = new DataSet();
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));

        try
        {
            bd.bdConecta();
            string sql1 = "exec SPInsPersona2 '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}',1";
            sql1 = string.Format(sql1, persona.nombre1, persona.nombre2, persona.apellido1, persona.apellido2, persona.calle, persona.colonia,
                persona.municipio, persona.cp, persona.telefono1, persona.telefono2, persona.celular1, persona.celular2,
                persona.fechanacimiento.ToString("yyyy/MM/dd"), persona.ciudadnacimiento, persona.paisnacimiento,
                persona.comentarios, persona.email,persona.estadocivil,persona.ciudad,persona.estado);
            DataTable dtPersona = bd.dataSetConsulta(sql1, "persona").Tables[0];

            string sql2 = "exec SPInsCandidato '{0}',1";
            sql2 = string.Format(sql2, dtPersona.Rows[0]["idpersona"].ToString());
            DataTable dtCandidato = bd.dataSetConsulta(sql2, "candidato").Tables[0];

            string sql3 = "exec SPInsUsuario  '{0}','{1}','{2}',1";
            sql3 = string.Format(sql3, dtPersona.Rows[0]["idpersona"].ToString(), usr.username, usr.password);            
            bd.bdEjecuta(sql3);

            ds = new DataSet();
            ds.Tables.Add(dtPersona.Copy());
            ds.Tables.Add(dtCandidato.Copy());

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return ds;
    }

    public static void ActualizaCandidato(Candidato candidato, Persona persona, Usuario usr)
    {

        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));

        try
        {
            bd.bdConecta();
            string sActivo = "";
            if (persona.activo == true)
                sActivo = "1";
            else
                sActivo = "0";

            string sql1 = "exec SPUpdPersona2 '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}',{17},'{18}','{19}','{20}','{21}'";
            sql1 = string.Format(sql1, persona.idpersona, persona.nombre1, persona.nombre2, persona.apellido1,
                persona.apellido2, persona.calle, persona.colonia,
                persona.municipio, persona.cp, persona.telefono1, persona.telefono2, persona.celular1, persona.celular2,
                persona.fechanacimiento.ToString("yyyy/MM/dd"), persona.ciudadnacimiento, persona.paisnacimiento,
                persona.comentarios, sActivo, persona.email,persona.estadocivil,persona.ciudad,persona.estado);
            int iEjecuta = 0;
            iEjecuta = bd.bdEjecuta(sql1);

            string sql2 = "exec SPUpdCandidato '{0}','{1}',{2}";
            sql2 = string.Format(sql2, candidato.idcandidato, candidato.idpersona, candidato.activo);
            iEjecuta = bd.bdEjecuta(sql2);

            string sql3 = "update Usuario set username = '{0}', password = '{1}' where idusuario = '{2}'";
            sql3 = string.Format(sql3,usr.username,usr.password,usr.idusuario);
            bd.bdEjecuta(sql3);
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }

    }

    public static DataSet GuardaCurriculum(Curriculum curr)
    {
        DataSet ds = new DataSet();
        bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));

        try
        {
            bd.bdConecta();
            string sql = "exec SPInsCurriculum " +
                "'{0}'," +
                "'{1}'," +
                "'{2}'," +
                "'{3}'," +
                "'{4}'," +
                "'{5}'," +
                "1";

            sql = string.Format(sql, curr.idcandidato, curr.nombrecompleto,
                curr.expectativasprofesionales, curr.estudiosrealizados,
                curr.expectativasprofesionales, curr.competencias,
                curr.competencias, curr.habilidades);

            ds = bd.dataSetConsulta(sql, "curr");


        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
        finally
        {
            bd.bdCierra();
        }
        return ds;
    }

}